7
תגובות

Undefined index ב Wamp

פתח Ben ,
היי.
בכל טופס התחברות כלשהו שאני מכריז על משתנים, מופיע לי השגיאה Undefined index.
זה רק ב WAMP, כשאני מעלה את זה על איחסון הכל בסדר גמור.
בנוסף, ישנם משתנים שאני פונה אליהם ע"י & הכוונה למשהו כזה:
$username = htmlSpecialChars(&$_POST['username'];)


זה מראה לי שגיאה ב - &, אם אני מוריד את זה זה עובד, אם אני משאיר את זה הוא מראה את השגיאה הזו:
Call-time pass-by-reference has been removed in

שוב, באיחסון השגיאות הללו לא מופיעים בכלל.
אשמח לעזרה איך לפתור אותן.

7 תשובות

avatar ענה intval ב 11 לדצמבר 2012 #

באחסון עדיין יש את כל השגיאות האלה, פשוט השרת של האחסון לא מוגדר להציג שגיאות על המסך. הוא פשוט רושם את אותם לאיזה קובץ לוג כדי שהגולשים שלך לא יראה שיש באתר כל כך הרבה בעיות.

א. תוריד את ה & לגמרי. בשביל מה שמת את זה שם בכלל?
ב. העניין של המשתנים הלא מוגדרים הוא קצת יותר מסובך.

כשאתה גולש לעמוד שהקוד שלו נראה ככה

<?php echo $hello;

מה אתה מצפה לראות על המסך?
אם התשובה שלך "כלום ו/או הודעה על שגיאה" - תמשיך לקרוא הלאה.
אם התשובה שלך היא משהו אחר, גש לחנות ספרים.

ואם אתה גולש בפעם הראשונה לעמוד שהקוד שלו נראה ככה:
<?php echo $_POST['name'];

מה אתה מצפה לראות?

POST הוא מערך של נתונים שמתשמש הזין בתוך טופס.
כשאתה גולש לעמוד המתואר בפעם הראשונה - ברור שלא היזנת שום נתונים בשום טופס
מכאן שאתה מקבל את הודעת השגיאה הזו.

איך לטפל בזה?
לבדוק שהוזנו נתונים כלשהם:

<?php

if(isset($_POST['name']))
{
  echo 'Hi ', $_POST['name'];
}
else
{
  ?>
  <form method='POST'>
    Please enter your name:
    <input name='name' />
  </form>
  <?php
}


איזה פונקציה בקוד למעלה בדיוק עושה את הבדיקה שמשהו הוזן אני אשאיר להבחנה שלך.

avatar ענה Ben ב 11 לדצמבר 2012 #

תודה רבה. עשיתי דבר כזה:

$username = (isset($_POST['username'])) ? hsc($_POST['username']) : hsc($_POST['username'] = '');

זה נכון לעשות דבר כזה ?. זה מבטל את השגיאה, אבל מבחינת אבטחה וכל מה שמסביב זה בסדר ? (אני מתכוון למה שמתבצע ב ELSE).

avatar ענה intval ב 11 לדצמבר 2012 #

קטסטרופה.
אתה יכול להשאיר ככה, זה יעבוד. אבל לחשוב לבד כמה פעולות מיותרות הכנסת לשורה הזו אני אשאיר לך.
בנוסף, מה אתה כבר רוצה לעשות בעמוד אם הוא לא הזין שום דבר בטופס? אתה בכוח כופה עליו שם משתמש כלשהו??

avatar ענה Ben ב 11 לדצמבר 2012 #

אני פשוט לא רוצה את השגיאה הזו.
מה אני יעשה יוסיף @ ? תסביר לי מה אוכל לעשות אולי משהו בהגדרות של הWAMP או משהו כזה כדי שהשגיאה הזו תעלם
שיהיה ממש כמו באחסון...

avatar ענה Ben ב 13 לדצמבר 2012 #

עזרה ?

avatar ענה intval ב 13 לדצמבר 2012 #

הדבר היחידי שאתה יכול לעשות כדי למנוע את השגיאה הזאת, זה להשתמש בראש שלך.
כתבתי לך הסבר ארוך ומפורט למה זה קורה. אם אתה לא רוצה להבין אותו, אף אחד לא יכול "להבין אותו בשבילך".

זה קורה כי הבן אדם לא הזין שום דבר בטופס.
למרות שהוא לא הזין שום דבר ולמרות שהסקריפט שלך מצפה שהוא כן יזין, אתה בכל זאת דוחף לסקריפט ערכים מונפצים
כדי שהוא יעבוד.

avatar ענה Ben ב 13 לדצמבר 2012 #

כן הבנתי, תודה!.